﻿//using Microsoft.AspNetCore.Mvc;
//using Microsoft.AspNetCore.Mvc.Controllers;
//using Microsoft.AspNetCore.Mvc.Filters;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;

//namespace ITSM.Filter
//{
//    public class ReturnUserIdFilter : ActionFilterAttribute
//    {
//        private readonly ITokenHelper _tokenHelper;

//        public ReturnUserIdFilter()
//        {
//            _tokenHelper = new TokenHelper();
//        }

//        public ReturnUserIdFilter(ITokenHelper tokenHelper)
//        {
//            _tokenHelper = tokenHelper;
//        }

//        //public override void OnActionExecuted(ActionExecutedContext context)
//        //{
//        //    var descriptor = context.ActionDescriptor as ControllerActionDescriptor;
//        //    string result = string.Empty;
//        //    if (context.Result is ObjectResult)
//        //    {
//        //        var data = ((ObjectResult)context.Result).Value;

//        //        if (data.GetType().Name.IndexOf("List`") >= 0)
//        //        {
//        //            IEnumerable<dynamic> list = (IEnumerable<dynamic>)data;
//        //            foreach (var item2 in list)
//        //            {
//        //                foreach (var item in item2.GetType().GetProperties())
//        //                {
//        //                    object? obj = item.GetValue(item2);
//        //                    string objKey = item.Name;
//        //                    if (objKey == "RYD_UserId" || objKey == "RYD_ItId" || objKey == "RYD_ToItId" || objKey == "RYD_CreateBy" || objKey == "RYD_ModifyBy")
//        //                    {
//        //                        if (obj != null)
//        //                        {

//        //                            if (_tokenHelper.ValiToken(obj.ToString(), null))
//        //                            {
//        //                                continue;
//        //                            }
//        //                            item.SetValue(item2, _tokenHelper.CreateTokenNoDate(obj.ToString()).TokenStr);
//        //                        }
//        //                    }
//        //                    if (obj == null)
//        //                    {
//        //                        continue;
//        //                    }
//        //                    if (obj.GetType().Name.IndexOf("List`") >= 0)
//        //                    {
//        //                        IEnumerable<dynamic> list1 = (IEnumerable<dynamic>)obj;
//        //                        foreach (var item3 in list1)
//        //                        {
//        //                            foreach (var item4 in item3.GetType().GetProperties())
//        //                            {
//        //                                object? obj2 = item4.GetValue(item3);
//        //                                string objKey2 = item4.Name;
//        //                                if (objKey2 == "RYD_UserId" || objKey2 == "RYD_ItId" || objKey2 == "RYD_ToItId" || objKey == "RYD_CreateBy" || objKey == "RYD_ModifyBy")
//        //                                {
//        //                                    if (obj2 != null)
//        //                                    {

//        //                                        if (_tokenHelper.ValiToken(obj2.ToString(), null))
//        //                                        {
//        //                                            continue;
//        //                                        }
//        //                                        item4.SetValue(item3, _tokenHelper.CreateTokenNoDate(obj2.ToString()).TokenStr);
//        //                                    }
//        //                                }
//        //                            }
//        //                        }
//        //                    }

//        //                }

//        //            }
//        //        }
//        //        else
//        //        {
//        //            foreach (var item in data.GetType().GetProperties())
//        //            {
//        //                object? obj = item.GetValue(data);
//        //                string objKey = item.Name;
//        //                if (objKey == "RYD_UserId" || objKey == "RYD_ItId" || objKey == "RYD_ToItId" || objKey == "RYD_CreateBy" || objKey == "RYD_ModifyBy")
//        //                {
//        //                    if (obj != null)
//        //                    {

//        //                        if (_tokenHelper.ValiToken(obj.ToString(), null))
//        //                        {
//        //                            continue;
//        //                        }
//        //                        item.SetValue(data, _tokenHelper.CreateTokenNoDate(obj.ToString()).TokenStr);
//        //                    }
//        //                }
//        //                if (obj == null)
//        //                {
//        //                    continue;
//        //                }
//        //                if (obj.GetType().Name.IndexOf("List`") >= 0)
//        //                {
//        //                    IEnumerable<dynamic> list = (IEnumerable<dynamic>)obj;
//        //                    foreach (var item2 in list)
//        //                    {
//        //                        foreach (var item3 in item2.GetType().GetProperties())
//        //                        {
//        //                            object? obj2 = item3.GetValue(item2);
//        //                            string objKey2 = item3.Name;
//        //                            if (objKey2 == "RYD_UserId" || objKey2 == "RYD_ItId" || objKey2 == "RYD_ToItId" || objKey == "RYD_CreateBy" || objKey == "RYD_ModifyBy")
//        //                            {
//        //                                if (obj2 != null)
//        //                                {

//        //                                    if (_tokenHelper.ValiToken(obj2.ToString(), null))
//        //                                    {
//        //                                        continue;
//        //                                    }
//        //                                    item3.SetValue(item2, _tokenHelper.CreateTokenNoDate(obj2.ToString()).TokenStr);
//        //                                }
//        //                            }
//        //                        }
//        //                    }
//        //                }

//        //            }


//        //        }
//        //    }
//        //}
//    }
//}
